{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Numpy与原生Python的性能对比\n",
    "- 需求:\n",
    "- 实现两个数组的加法\n",
    "- 数组A是 1~N数字的平方\n",
    "- 数组B是 1~N数字的立方\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "'1.18.1'"
     },
     "metadata": {},
     "execution_count": 10
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.__version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用Python原生语法实现对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "[0, 2, 12, 36, 80, 150, 252, 392, 576, 810]"
     },
     "metadata": {},
     "execution_count": 12
    }
   ],
   "source": [
    "def python_sum(n):\n",
    "    \"\"\" Python 实现数组的加法\n",
    "    @param n:数组的长度\n",
    "    \"\"\"\n",
    "    a=[i**2 for i in range(n)]\n",
    "    b=[i**3 for i in range(n)]\n",
    "    c=[]\n",
    "    for i in range(n):\n",
    "        c.append(a[i]+b[i])\n",
    "    return c\n",
    "\n",
    "python_sum(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用numpy实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([  0,   2,  12,  36,  80, 150, 252, 392, 576, 810], dtype=int32)"
     },
     "metadata": {},
     "execution_count": 13
    }
   ],
   "source": [
    "def numpy_sum(n):\n",
    "    \"\"\" numpy 实现数组的加法\n",
    "    @param n:数组的长度\n",
    "    \"\"\"\n",
    "    a=np.arange(n)**2    # \n",
    "    b=np.arange(n)**3\n",
    "    return a+b\n",
    "numpy_sum(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 性能对比 10w次"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "107 ms ± 2.15 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
    }
   ],
   "source": [
    "%timeit python_sum(10*10000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "514 µs ± 12.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
    }
   ],
   "source": [
    "%timeit numpy_sum(10*10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 绘制性能对比图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "pytimes=[1.06 * 1000,104*1000,10.4*1000*1000]\n",
    "nptimes=[9.16,514,114*1000]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "df=pd.DataFrame({\n",
    "    'pytimes':pytimes,\n",
    "    'nptimes':nptimes,\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x21885e81ac8>"
     },
     "metadata": {},
     "execution_count": 24
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"255.800937pt\" version=\"1.1\" viewBox=\"0 0 372.103125 255.800937\" width=\"372.103125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 255.800937 \r\nL 372.103125 255.800937 \r\nL 372.103125 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 30.103125 235.238437 \r\nL 364.903125 235.238437 \r\nL 364.903125 17.798437 \r\nL 30.103125 17.798437 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 58.003125 235.238437 \r\nL 85.903125 235.238437 \r\nL 85.903125 235.217331 \r\nL 58.003125 235.217331 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 169.603125 235.238437 \r\nL 197.503125 235.238437 \r\nL 197.503125 233.16758 \r\nL 169.603125 233.16758 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 281.203125 235.238437 \r\nL 309.103125 235.238437 \r\nL 309.103125 28.152723 \r\nL 281.203125 28.152723 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 85.903125 235.238437 \r\nL 113.803125 235.238437 \r\nL 113.803125 235.238255 \r\nL 85.903125 235.238255 \r\nz\r\n\" style=\"fill:#ff7f0e;\"/>\r\n   </g>\r\n   <g id=\"patch_7\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 197.503125 235.238437 \r\nL 225.403125 235.238437 \r\nL 225.403125 235.228203 \r\nL 197.503125 235.228203 \r\nz\r\n\" style=\"fill:#ff7f0e;\"/>\r\n   </g>\r\n   <g id=\"patch_8\">\r\n    <path clip-path=\"url(#p4646140678)\" d=\"M 309.103125 235.238437 \r\nL 337.003125 235.238437 \r\nL 337.003125 232.968459 \r\nL 309.103125 232.968459 \r\nz\r\n\" style=\"fill:#ff7f0e;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m6078e72199\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"85.903125\" xlink:href=\"#m6078e72199\" y=\"235.238437\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- 0 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n      </defs>\r\n      <g transform=\"translate(88.6625 248.600937)rotate(-90)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"197.503125\" xlink:href=\"#m6078e72199\" y=\"235.238437\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- 1 -->\r\n      <defs>\r\n       <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n      </defs>\r\n      <g transform=\"translate(200.2625 248.600937)rotate(-90)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"309.103125\" xlink:href=\"#m6078e72199\" y=\"235.238437\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- 2 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(311.8625 248.600937)rotate(-90)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_4\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"mda7434fdee\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"235.238437\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- 0.0 -->\r\n      <defs>\r\n       <path d=\"M 10.6875 12.40625 \r\nL 21 12.40625 \r\nL 21 0 \r\nL 10.6875 0 \r\nz\r\n\" id=\"DejaVuSans-46\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 239.037656)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"195.414262\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 0.2 -->\r\n      <g transform=\"translate(7.2 199.21348)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"155.590086\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 0.4 -->\r\n      <defs>\r\n       <path d=\"M 37.796875 64.3125 \r\nL 12.890625 25.390625 \r\nL 37.796875 25.390625 \r\nz\r\nM 35.203125 72.90625 \r\nL 47.609375 72.90625 \r\nL 47.609375 25.390625 \r\nL 58.015625 25.390625 \r\nL 58.015625 17.1875 \r\nL 47.609375 17.1875 \r\nL 47.609375 0 \r\nL 37.796875 0 \r\nL 37.796875 17.1875 \r\nL 4.890625 17.1875 \r\nL 4.890625 26.703125 \r\nz\r\n\" id=\"DejaVuSans-52\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 159.389305)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"115.76591\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 0.6 -->\r\n      <defs>\r\n       <path d=\"M 33.015625 40.375 \r\nQ 26.375 40.375 22.484375 35.828125 \r\nQ 18.609375 31.296875 18.609375 23.390625 \r\nQ 18.609375 15.53125 22.484375 10.953125 \r\nQ 26.375 6.390625 33.015625 6.390625 \r\nQ 39.65625 6.390625 43.53125 10.953125 \r\nQ 47.40625 15.53125 47.40625 23.390625 \r\nQ 47.40625 31.296875 43.53125 35.828125 \r\nQ 39.65625 40.375 33.015625 40.375 \r\nz\r\nM 52.59375 71.296875 \r\nL 52.59375 62.3125 \r\nQ 48.875 64.0625 45.09375 64.984375 \r\nQ 41.3125 65.921875 37.59375 65.921875 \r\nQ 27.828125 65.921875 22.671875 59.328125 \r\nQ 17.53125 52.734375 16.796875 39.40625 \r\nQ 19.671875 43.65625 24.015625 45.921875 \r\nQ 28.375 48.1875 33.59375 48.1875 \r\nQ 44.578125 48.1875 50.953125 41.515625 \r\nQ 57.328125 34.859375 57.328125 23.390625 \r\nQ 57.328125 12.15625 50.6875 5.359375 \r\nQ 44.046875 -1.421875 33.015625 -1.421875 \r\nQ 20.359375 -1.421875 13.671875 8.265625 \r\nQ 6.984375 17.96875 6.984375 36.375 \r\nQ 6.984375 53.65625 15.1875 63.9375 \r\nQ 23.390625 74.21875 37.203125 74.21875 \r\nQ 40.921875 74.21875 44.703125 73.484375 \r\nQ 48.484375 72.75 52.59375 71.296875 \r\nz\r\n\" id=\"DejaVuSans-54\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 119.565129)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"75.941734\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 0.8 -->\r\n      <defs>\r\n       <path d=\"M 31.78125 34.625 \r\nQ 24.75 34.625 20.71875 30.859375 \r\nQ 16.703125 27.09375 16.703125 20.515625 \r\nQ 16.703125 13.921875 20.71875 10.15625 \r\nQ 24.75 6.390625 31.78125 6.390625 \r\nQ 38.8125 6.390625 42.859375 10.171875 \r\nQ 46.921875 13.96875 46.921875 20.515625 \r\nQ 46.921875 27.09375 42.890625 30.859375 \r\nQ 38.875 34.625 31.78125 34.625 \r\nz\r\nM 21.921875 38.8125 \r\nQ 15.578125 40.375 12.03125 44.71875 \r\nQ 8.5 49.078125 8.5 55.328125 \r\nQ 8.5 64.0625 14.71875 69.140625 \r\nQ 20.953125 74.21875 31.78125 74.21875 \r\nQ 42.671875 74.21875 48.875 69.140625 \r\nQ 55.078125 64.0625 55.078125 55.328125 \r\nQ 55.078125 49.078125 51.53125 44.71875 \r\nQ 48 40.375 41.703125 38.8125 \r\nQ 48.828125 37.15625 52.796875 32.3125 \r\nQ 56.78125 27.484375 56.78125 20.515625 \r\nQ 56.78125 9.90625 50.3125 4.234375 \r\nQ 43.84375 -1.421875 31.78125 -1.421875 \r\nQ 19.734375 -1.421875 13.25 4.234375 \r\nQ 6.78125 9.90625 6.78125 20.515625 \r\nQ 6.78125 27.484375 10.78125 32.3125 \r\nQ 14.796875 37.15625 21.921875 38.8125 \r\nz\r\nM 18.3125 54.390625 \r\nQ 18.3125 48.734375 21.84375 45.5625 \r\nQ 25.390625 42.390625 31.78125 42.390625 \r\nQ 38.140625 42.390625 41.71875 45.5625 \r\nQ 45.3125 48.734375 45.3125 54.390625 \r\nQ 45.3125 60.0625 41.71875 63.234375 \r\nQ 38.140625 66.40625 31.78125 66.40625 \r\nQ 25.390625 66.40625 21.84375 63.234375 \r\nQ 18.3125 60.0625 18.3125 54.390625 \r\nz\r\n\" id=\"DejaVuSans-56\"/>\r\n      </defs>\r\n      <g transform=\"translate(7.2 79.740953)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_9\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mda7434fdee\" y=\"36.117558\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 1.0 -->\r\n      <g transform=\"translate(7.2 39.916777)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"text_10\">\r\n     <!-- 1e7 -->\r\n     <defs>\r\n      <path d=\"M 56.203125 29.59375 \r\nL 56.203125 25.203125 \r\nL 14.890625 25.203125 \r\nQ 15.484375 15.921875 20.484375 11.0625 \r\nQ 25.484375 6.203125 34.421875 6.203125 \r\nQ 39.59375 6.203125 44.453125 7.46875 \r\nQ 49.3125 8.734375 54.109375 11.28125 \r\nL 54.109375 2.78125 \r\nQ 49.265625 0.734375 44.1875 -0.34375 \r\nQ 39.109375 -1.421875 33.890625 -1.421875 \r\nQ 20.796875 -1.421875 13.15625 6.1875 \r\nQ 5.515625 13.8125 5.515625 26.8125 \r\nQ 5.515625 40.234375 12.765625 48.109375 \r\nQ 20.015625 56 32.328125 56 \r\nQ 43.359375 56 49.78125 48.890625 \r\nQ 56.203125 41.796875 56.203125 29.59375 \r\nz\r\nM 47.21875 32.234375 \r\nQ 47.125 39.59375 43.09375 43.984375 \r\nQ 39.0625 48.390625 32.421875 48.390625 \r\nQ 24.90625 48.390625 20.390625 44.140625 \r\nQ 15.875 39.890625 15.1875 32.171875 \r\nz\r\n\" id=\"DejaVuSans-101\"/>\r\n      <path d=\"M 8.203125 72.90625 \r\nL 55.078125 72.90625 \r\nL 55.078125 68.703125 \r\nL 28.609375 0 \r\nL 18.3125 0 \r\nL 43.21875 64.59375 \r\nL 8.203125 64.59375 \r\nz\r\n\" id=\"DejaVuSans-55\"/>\r\n     </defs>\r\n     <g transform=\"translate(30.103125 14.798437)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-49\"/>\r\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"125.146484\" xlink:href=\"#DejaVuSans-55\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"patch_9\">\r\n    <path d=\"M 30.103125 235.238437 \r\nL 30.103125 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_10\">\r\n    <path d=\"M 364.903125 235.238437 \r\nL 364.903125 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_11\">\r\n    <path d=\"M 30.103125 235.238437 \r\nL 364.903125 235.238437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_12\">\r\n    <path d=\"M 30.103125 17.798437 \r\nL 364.903125 17.798437 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"legend_1\">\r\n    <g id=\"patch_13\">\r\n     <path d=\"M 37.103125 55.154687 \r\nL 109.590625 55.154687 \r\nQ 111.590625 55.154687 111.590625 53.154687 \r\nL 111.590625 24.798437 \r\nQ 111.590625 22.798437 109.590625 22.798437 \r\nL 37.103125 22.798437 \r\nQ 35.103125 22.798437 35.103125 24.798437 \r\nL 35.103125 53.154687 \r\nQ 35.103125 55.154687 37.103125 55.154687 \r\nz\r\n\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\r\n    </g>\r\n    <g id=\"patch_14\">\r\n     <path d=\"M 39.103125 34.396875 \r\nL 59.103125 34.396875 \r\nL 59.103125 27.396875 \r\nL 39.103125 27.396875 \r\nz\r\n\" style=\"fill:#1f77b4;\"/>\r\n    </g>\r\n    <g id=\"text_11\">\r\n     <!-- pytimes -->\r\n     <defs>\r\n      <path d=\"M 18.109375 8.203125 \r\nL 18.109375 -20.796875 \r\nL 9.078125 -20.796875 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.390625 \r\nQ 20.953125 51.265625 25.265625 53.625 \r\nQ 29.59375 56 35.59375 56 \r\nQ 45.5625 56 51.78125 48.09375 \r\nQ 58.015625 40.1875 58.015625 27.296875 \r\nQ 58.015625 14.40625 51.78125 6.484375 \r\nQ 45.5625 -1.421875 35.59375 -1.421875 \r\nQ 29.59375 -1.421875 25.265625 0.953125 \r\nQ 20.953125 3.328125 18.109375 8.203125 \r\nz\r\nM 48.6875 27.296875 \r\nQ 48.6875 37.203125 44.609375 42.84375 \r\nQ 40.53125 48.484375 33.40625 48.484375 \r\nQ 26.265625 48.484375 22.1875 42.84375 \r\nQ 18.109375 37.203125 18.109375 27.296875 \r\nQ 18.109375 17.390625 22.1875 11.75 \r\nQ 26.265625 6.109375 33.40625 6.109375 \r\nQ 40.53125 6.109375 44.609375 11.75 \r\nQ 48.6875 17.390625 48.6875 27.296875 \r\nz\r\n\" id=\"DejaVuSans-112\"/>\r\n      <path d=\"M 32.171875 -5.078125 \r\nQ 28.375 -14.84375 24.75 -17.8125 \r\nQ 21.140625 -20.796875 15.09375 -20.796875 \r\nL 7.90625 -20.796875 \r\nL 7.90625 -13.28125 \r\nL 13.1875 -13.28125 \r\nQ 16.890625 -13.28125 18.9375 -11.515625 \r\nQ 21 -9.765625 23.484375 -3.21875 \r\nL 25.09375 0.875 \r\nL 2.984375 54.6875 \r\nL 12.5 54.6875 \r\nL 29.59375 11.921875 \r\nL 46.6875 54.6875 \r\nL 56.203125 54.6875 \r\nz\r\n\" id=\"DejaVuSans-121\"/>\r\n      <path d=\"M 18.3125 70.21875 \r\nL 18.3125 54.6875 \r\nL 36.8125 54.6875 \r\nL 36.8125 47.703125 \r\nL 18.3125 47.703125 \r\nL 18.3125 18.015625 \r\nQ 18.3125 11.328125 20.140625 9.421875 \r\nQ 21.96875 7.515625 27.59375 7.515625 \r\nL 36.8125 7.515625 \r\nL 36.8125 0 \r\nL 27.59375 0 \r\nQ 17.1875 0 13.234375 3.875 \r\nQ 9.28125 7.765625 9.28125 18.015625 \r\nL 9.28125 47.703125 \r\nL 2.6875 47.703125 \r\nL 2.6875 54.6875 \r\nL 9.28125 54.6875 \r\nL 9.28125 70.21875 \r\nz\r\n\" id=\"DejaVuSans-116\"/>\r\n      <path d=\"M 9.421875 54.6875 \r\nL 18.40625 54.6875 \r\nL 18.40625 0 \r\nL 9.421875 0 \r\nz\r\nM 9.421875 75.984375 \r\nL 18.40625 75.984375 \r\nL 18.40625 64.59375 \r\nL 9.421875 64.59375 \r\nz\r\n\" id=\"DejaVuSans-105\"/>\r\n      <path d=\"M 52 44.1875 \r\nQ 55.375 50.25 60.0625 53.125 \r\nQ 64.75 56 71.09375 56 \r\nQ 79.640625 56 84.28125 50.015625 \r\nQ 88.921875 44.046875 88.921875 33.015625 \r\nL 88.921875 0 \r\nL 79.890625 0 \r\nL 79.890625 32.71875 \r\nQ 79.890625 40.578125 77.09375 44.375 \r\nQ 74.3125 48.1875 68.609375 48.1875 \r\nQ 61.625 48.1875 57.5625 43.546875 \r\nQ 53.515625 38.921875 53.515625 30.90625 \r\nL 53.515625 0 \r\nL 44.484375 0 \r\nL 44.484375 32.71875 \r\nQ 44.484375 40.625 41.703125 44.40625 \r\nQ 38.921875 48.1875 33.109375 48.1875 \r\nQ 26.21875 48.1875 22.15625 43.53125 \r\nQ 18.109375 38.875 18.109375 30.90625 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.1875 \r\nQ 21.1875 51.21875 25.484375 53.609375 \r\nQ 29.78125 56 35.6875 56 \r\nQ 41.65625 56 45.828125 52.96875 \r\nQ 50 49.953125 52 44.1875 \r\nz\r\n\" id=\"DejaVuSans-109\"/>\r\n      <path d=\"M 44.28125 53.078125 \r\nL 44.28125 44.578125 \r\nQ 40.484375 46.53125 36.375 47.5 \r\nQ 32.28125 48.484375 27.875 48.484375 \r\nQ 21.1875 48.484375 17.84375 46.4375 \r\nQ 14.5 44.390625 14.5 40.28125 \r\nQ 14.5 37.15625 16.890625 35.375 \r\nQ 19.28125 33.59375 26.515625 31.984375 \r\nL 29.59375 31.296875 \r\nQ 39.15625 29.25 43.1875 25.515625 \r\nQ 47.21875 21.78125 47.21875 15.09375 \r\nQ 47.21875 7.46875 41.1875 3.015625 \r\nQ 35.15625 -1.421875 24.609375 -1.421875 \r\nQ 20.21875 -1.421875 15.453125 -0.5625 \r\nQ 10.6875 0.296875 5.421875 2 \r\nL 5.421875 11.28125 \r\nQ 10.40625 8.6875 15.234375 7.390625 \r\nQ 20.0625 6.109375 24.8125 6.109375 \r\nQ 31.15625 6.109375 34.5625 8.28125 \r\nQ 37.984375 10.453125 37.984375 14.40625 \r\nQ 37.984375 18.0625 35.515625 20.015625 \r\nQ 33.0625 21.96875 24.703125 23.78125 \r\nL 21.578125 24.515625 \r\nQ 13.234375 26.265625 9.515625 29.90625 \r\nQ 5.8125 33.546875 5.8125 39.890625 \r\nQ 5.8125 47.609375 11.28125 51.796875 \r\nQ 16.75 56 26.8125 56 \r\nQ 31.78125 56 36.171875 55.265625 \r\nQ 40.578125 54.546875 44.28125 53.078125 \r\nz\r\n\" id=\"DejaVuSans-115\"/>\r\n     </defs>\r\n     <g transform=\"translate(67.103125 34.396875)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-112\"/>\r\n      <use x=\"63.476562\" xlink:href=\"#DejaVuSans-121\"/>\r\n      <use x=\"122.65625\" xlink:href=\"#DejaVuSans-116\"/>\r\n      <use x=\"161.865234\" xlink:href=\"#DejaVuSans-105\"/>\r\n      <use x=\"189.648438\" xlink:href=\"#DejaVuSans-109\"/>\r\n      <use x=\"287.060547\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"348.583984\" xlink:href=\"#DejaVuSans-115\"/>\r\n     </g>\r\n    </g>\r\n    <g id=\"patch_15\">\r\n     <path d=\"M 39.103125 49.075 \r\nL 59.103125 49.075 \r\nL 59.103125 42.075 \r\nL 39.103125 42.075 \r\nz\r\n\" style=\"fill:#ff7f0e;\"/>\r\n    </g>\r\n    <g id=\"text_12\">\r\n     <!-- nptimes -->\r\n     <defs>\r\n      <path d=\"M 54.890625 33.015625 \r\nL 54.890625 0 \r\nL 45.90625 0 \r\nL 45.90625 32.71875 \r\nQ 45.90625 40.484375 42.875 44.328125 \r\nQ 39.84375 48.1875 33.796875 48.1875 \r\nQ 26.515625 48.1875 22.3125 43.546875 \r\nQ 18.109375 38.921875 18.109375 30.90625 \r\nL 18.109375 0 \r\nL 9.078125 0 \r\nL 9.078125 54.6875 \r\nL 18.109375 54.6875 \r\nL 18.109375 46.1875 \r\nQ 21.34375 51.125 25.703125 53.5625 \r\nQ 30.078125 56 35.796875 56 \r\nQ 45.21875 56 50.046875 50.171875 \r\nQ 54.890625 44.34375 54.890625 33.015625 \r\nz\r\n\" id=\"DejaVuSans-110\"/>\r\n     </defs>\r\n     <g transform=\"translate(67.103125 49.075)scale(0.1 -0.1)\">\r\n      <use xlink:href=\"#DejaVuSans-110\"/>\r\n      <use x=\"63.378906\" xlink:href=\"#DejaVuSans-112\"/>\r\n      <use x=\"126.855469\" xlink:href=\"#DejaVuSans-116\"/>\r\n      <use x=\"166.064453\" xlink:href=\"#DejaVuSans-105\"/>\r\n      <use x=\"193.847656\" xlink:href=\"#DejaVuSans-109\"/>\r\n      <use x=\"291.259766\" xlink:href=\"#DejaVuSans-101\"/>\r\n      <use x=\"352.783203\" xlink:href=\"#DejaVuSans-115\"/>\r\n     </g>\r\n    </g>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p4646140678\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"30.103125\" y=\"17.798437\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "\n",
    "df.plot.bar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## numpy Array\n",
    "### array本身的属性\n",
    "- shape: 返回一个元组,表示array的维度\n",
    "- ndim: 一个数字,表示array的维度数目\n",
    "- size: 一个数字，表示 array中所有数据元素的数目\n",
    "- dtype: array中元素的数据类型\n",
    "\n",
    "### 创建array的方法\n",
    "- 从Python的列表List和嵌套列表创建array\n",
    "- 使用预定函数 arange 、 ones/ones_like 、 zeros/zeros_like 、 empty/empty_like 、 full/full_like 、 eye 等函数创建\n",
    "- 生产随机数的np.random 模块构建\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=np.array([1,2,3,4,5,6,7,8])\n",
    "X=np.array([\n",
    "    [1,2,3,4],\n",
    "    [5,6,7,8]\n",
    "])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 探索数组的array的属性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "(8,)"
     },
     "metadata": {},
     "execution_count": 27
    }
   ],
   "source": [
    "x.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "(2, 4)"
     },
     "metadata": {},
     "execution_count": 28
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1, 2, 3, 4],\n       [5, 6, 7, 8]])"
     },
     "metadata": {},
     "execution_count": 29
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "1"
     },
     "metadata": {},
     "execution_count": 31
    }
   ],
   "source": [
    "x.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "2"
     },
     "metadata": {},
     "execution_count": 32
    }
   ],
   "source": [
    "X.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "8"
     },
     "metadata": {},
     "execution_count": 33
    }
   ],
   "source": [
    "x.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "8"
     },
     "metadata": {},
     "execution_count": 34
    }
   ],
   "source": [
    "X.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "dtype('int32')"
     },
     "metadata": {},
     "execution_count": 35
    }
   ],
   "source": [
    "x.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "dtype('int32')"
     },
     "metadata": {},
     "execution_count": 36
    }
   ],
   "source": [
    "X.dtype"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 创建array的便捷函数\n",
    "    使用arange 创建数字序列\n",
    "    arange([start,] stop[,step],dtype=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
     },
     "metadata": {},
     "execution_count": 37
    }
   ],
   "source": [
    "np.arange(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([2, 4, 6, 8])"
     },
     "metadata": {},
     "execution_count": 38
    }
   ],
   "source": [
    "np.arange(2,10,2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用ones 创建全是1的数组\n",
    "np.ones(shape.dtype=None.order=\"C\")\n",
    "shape: int or tuple of ints Shape of the new array, e.g., `(2,3)` or 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1, 1, 1, 1],\n       [1, 1, 1, 1],\n       [1, 1, 1, 1]], dtype=int16)"
     },
     "metadata": {},
     "execution_count": 40
    }
   ],
   "source": [
    "np.ones((3,4),dtype=np.int16) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用 ones_likes 创建形状相同的数组\n",
    "ones_like (a,dtype=float,order=\"C\")\n",
    "仿照现有的 array shape 创建数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1, 1, 1, 1],\n       [1, 1, 1, 1]])"
     },
     "metadata": {},
     "execution_count": 41
    }
   ],
   "source": [
    "np.ones_like(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 使用zeros 创建全是 0的数组\n",
    "np.zeros(a,dtype=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[0., 0., 0., 0.],\n       [0., 0., 0., 0.],\n       [0., 0., 0., 0.]])"
     },
     "metadata": {},
     "execution_count": 42
    }
   ],
   "source": [
    "np.zeros((3,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3],\n       [ 4,  5,  6,  7],\n       [ 8,  9, 10, 11]])"
     },
     "metadata": {},
     "execution_count": 43
    }
   ],
   "source": [
    "np.arange(12).reshape((3,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[-1.04816793,  0.75898921],\n       [ 0.85284165, -0.24753658],\n       [ 0.72830443,  0.08937303]])"
     },
     "metadata": {},
     "execution_count": 48
    }
   ],
   "source": [
    "np.random.randn(3,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[[ 0.41495346, -0.85388011, -0.46989796,  2.44866902],\n        [ 0.72988335, -2.02755974,  0.65073247,  0.12725722]],\n\n       [[-1.23787864, -0.16502551, -2.26559494, -1.8436642 ],\n        [-0.38617815,  0.26279182, -2.28810629, -0.95941466]],\n\n       [[-1.7910345 , -1.70911431, -0.79956481,  0.97809048],\n        [-0.13513155, -0.97278103,  0.66166259,  1.0598879 ]]])"
     },
     "metadata": {},
     "execution_count": 54
    }
   ],
   "source": [
    "np.random.randn(3,2,4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### array本身支持的大量操作和函数\n",
    "这些操作如果用Python 实现需要写很多for循环, 用 numpy 数组很容易"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[0, 1, 2, 3, 4],\n       [5, 6, 7, 8, 9]])"
     },
     "metadata": {},
     "execution_count": 68
    }
   ],
   "source": [
    "A=np.arange(10).reshape(2,5)\n",
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "(2, 5)"
     },
     "metadata": {},
     "execution_count": 69
    }
   ],
   "source": [
    "A.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 1,  2,  3,  4,  5],\n       [ 6,  7,  8,  9, 10]])"
     },
     "metadata": {},
     "execution_count": 70
    }
   ],
   "source": [
    "A+1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  3,  6,  9, 12],\n       [15, 18, 21, 24, 27]])"
     },
     "metadata": {},
     "execution_count": 71
    }
   ],
   "source": [
    "A*3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ],\n       [-0.95892427, -0.2794155 ,  0.6569866 ,  0.98935825,  0.41211849]])"
     },
     "metadata": {},
     "execution_count": 72
    }
   ],
   "source": [
    "np.sin(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1.00000000e+00, 2.71828183e+00, 7.38905610e+00, 2.00855369e+01,\n        5.45981500e+01],\n       [1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03,\n        8.10308393e+03]])"
     },
     "metadata": {},
     "execution_count": 73
    }
   ],
   "source": [
    "np.exp(A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 1.29810531,  0.53387625,  0.90190489,  0.83736851, -0.23957352],\n       [-0.20263235,  0.37463545,  2.31414096,  0.9957044 , -0.40485118]])"
     },
     "metadata": {},
     "execution_count": 75
    }
   ],
   "source": [
    "B=np.random.randn(2,5)\n",
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[1.29810531, 1.53387625, 2.90190489, 3.83736851, 3.76042648],\n       [4.79736765, 6.37463545, 9.31414096, 8.9957044 , 8.59514882]])"
     },
     "metadata": {},
     "execution_count": 77
    }
   ],
   "source": [
    "A+B"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 神奇索引\n",
    "其实就是: 用整数数组进行的索引, 叫神奇索引"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 一维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
     },
     "metadata": {},
     "execution_count": 79
    }
   ],
   "source": [
    "x=np.arange(10)\n",
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([3, 4, 7])"
     },
     "metadata": {},
     "execution_count": 82
    }
   ],
   "source": [
    "x[[3,4,7]]  #返回了三个位置对应的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[0, 2],\n       [1, 3]])"
     },
     "metadata": {},
     "execution_count": 84
    }
   ],
   "source": [
    "indexs=np.array([[0,2],[1,3]])\n",
    "x[indexs]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 获取数组中最大的前N个数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([19,  9, 51, 58, 84, 35,  1, 27, 21, 10])"
     },
     "metadata": {},
     "execution_count": 93
    }
   ],
   "source": [
    "arr=np.random.randint(1,100,10)\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([2, 3, 4], dtype=int64)"
     },
     "metadata": {},
     "execution_count": 95
    }
   ],
   "source": [
    "# arr.argsort() 会返回排序后的索引index\n",
    "# 取最大值对应的三个下标\n",
    "arr.argsort()[-3:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([51, 58, 84])"
     },
     "metadata": {},
     "execution_count": 96
    }
   ],
   "source": [
    "arr[arr.argsort()[-3:]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二维数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3,  4],\n       [ 5,  6,  7,  8,  9],\n       [10, 11, 12, 13, 14],\n       [15, 16, 17, 18, 19]])"
     },
     "metadata": {},
     "execution_count": 97
    }
   ],
   "source": [
    "X=np.arange(20).reshape(4,5)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3,  4],\n       [10, 11, 12, 13, 14]])"
     },
     "metadata": {},
     "execution_count": 98
    }
   ],
   "source": [
    "# 筛选多行, 列可以省略\n",
    "X[[0,2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  2,  3],\n       [ 5,  7,  8],\n       [10, 12, 13],\n       [15, 17, 18]])"
     },
     "metadata": {},
     "execution_count": 106
    }
   ],
   "source": [
    "# 筛选多列, 行不能省略\n",
    "X[:, [0,2,3]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 1, 13, 19])"
     },
     "metadata": {},
     "execution_count": 107
    }
   ],
   "source": [
    "#同时指定行列\n",
    "X[[0,2,3],[1,3,4]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 布尔索引"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3,  4],\n       [ 5,  6,  7,  8,  9],\n       [10, 11, 12, 13, 14],\n       [15, 16, 17, 18, 19]])"
     },
     "metadata": {},
     "execution_count": 108
    }
   ],
   "source": [
    "X=np.arange(20).reshape(4,5)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[False, False, False, False, False],\n       [False,  True,  True,  True,  True],\n       [ True,  True,  True,  True,  True],\n       [ True,  True,  True,  True,  True]])"
     },
     "metadata": {},
     "execution_count": 109
    }
   ],
   "source": [
    "X>5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])"
     },
     "metadata": {},
     "execution_count": 110
    }
   ],
   "source": [
    "X[X>5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 3,  8, 13, 18])"
     },
     "metadata": {},
     "execution_count": 111
    }
   ],
   "source": [
    "X[:,3]  #第三列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([False,  True,  True,  True])"
     },
     "metadata": {},
     "execution_count": 113
    }
   ],
   "source": [
    "X[:,3]>5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 5,  6,  7,  8,  9],\n       [10, 11, 12, 13, 14],\n       [15, 16, 17, 18, 19]])"
     },
     "metadata": {},
     "execution_count": 114
    }
   ],
   "source": [
    "X[X[:,3]>5]  #判断一个特征是否大于5 大于的话就把行取出来"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Numpy 常用random 随机函数汇总"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "np.random.seed(666)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[[0.70043712, 0.84418664, 0.67651434, 0.72785806],\n        [0.95145796, 0.0127032 , 0.4135877 , 0.04881279],\n        [0.09992856, 0.50806631, 0.20024754, 0.74415417]],\n\n       [[0.192892  , 0.70084475, 0.29322811, 0.77447945],\n        [0.00510884, 0.11285765, 0.11095367, 0.24766823],\n        [0.0232363 , 0.72732115, 0.34003494, 0.19750316]]])"
     },
     "metadata": {},
     "execution_count": 119
    }
   ],
   "source": [
    "np.random.rand(2,3,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[[-1.68290077,  0.22918525, -1.75662522,  0.84463262],\n        [ 0.27721986,  0.85290153,  0.1945996 ,  1.31063772],\n        [ 1.5438436 , -0.52904802, -0.6564723 , -0.2015057 ]],\n\n       [[-0.70061583,  0.68713795, -0.02607576, -0.82975832],\n        [ 0.29655378, -0.3126795 , -0.61130127, -0.8217515 ],\n        [ 0.8971227 ,  0.13607861, -0.2586548 ,  1.11076564]]])"
     },
     "metadata": {},
     "execution_count": 120
    }
   ],
   "source": [
    "np.random.randn(2,3,4)  #返回的数据具有标准正态分布(均值为0，方差为1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### choice(a\\[,size,replace,p\\])  \n",
    "    a是一维数组(rnage), 从它里面生成随机结果  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([3, 1, 1])"
     },
     "metadata": {},
     "execution_count": 121
    }
   ],
   "source": [
    "np.random.choice(5,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[4, 1, 3],\n       [2, 0, 4]])"
     },
     "metadata": {},
     "execution_count": 123
    }
   ],
   "source": [
    "np.random.choice(5,(2,3))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### normal (\\[loc,scale,size\\])\n",
    "按照平均值loc的方差scale 生产高斯分布的数字"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([  1.77221883,   0.36008676,  10.45923407,  13.04091005,\n        -3.51240735, -14.8744651 , -17.68855481,   2.00377373,\n       -29.94870589,  34.93516782])"
     },
     "metadata": {},
     "execution_count": 125
    }
   ],
   "source": [
    "np.random.normal(1,10,10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[-5.05590199, 18.39251096,  8.1150415 , -0.70650046],\n       [ 9.00130022,  7.77755091, -8.5042859 ,  0.42923371],\n       [ 4.59510764,  6.22945658, -8.13958987, -4.84949296]])"
     },
     "metadata": {},
     "execution_count": 127
    }
   ],
   "source": [
    "np.random.normal(1,10,(3,4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([5.44918163, 1.36805949, 5.30517054, 3.7809118 , 9.28522236,\n       9.26151116, 5.21640038, 3.10881775, 1.80842449, 7.11463217])"
     },
     "metadata": {},
     "execution_count": 128
    }
   ],
   "source": [
    "np.random.uniform(1,10,10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对数组加入随机噪声"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 386.845312 248.518125\" width=\"386.845312pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M 0 248.518125 \r\nL 386.845312 248.518125 \r\nL 386.845312 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 44.845313 224.64 \r\nL 379.645313 224.64 \r\nL 379.645313 7.2 \r\nL 44.845313 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m4c0284f75b\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"60.063494\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −10.0 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n       <path d=\"M 10.6875 12.40625 \r\nL 21 12.40625 \r\nL 21 0 \r\nL 10.6875 0 \r\nz\r\n\" id=\"DejaVuSans-46\"/>\r\n      </defs>\r\n      <g transform=\"translate(44.740838 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"211.035156\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"98.108949\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −7.5 -->\r\n      <defs>\r\n       <path d=\"M 8.203125 72.90625 \r\nL 55.078125 72.90625 \r\nL 55.078125 68.703125 \r\nL 28.609375 0 \r\nL 18.3125 0 \r\nL 43.21875 64.59375 \r\nL 8.203125 64.59375 \r\nz\r\n\" id=\"DejaVuSans-55\"/>\r\n       <path d=\"M 10.796875 72.90625 \r\nL 49.515625 72.90625 \r\nL 49.515625 64.59375 \r\nL 19.828125 64.59375 \r\nL 19.828125 46.734375 \r\nQ 21.96875 47.46875 24.109375 47.828125 \r\nQ 26.265625 48.1875 28.421875 48.1875 \r\nQ 40.625 48.1875 47.75 41.5 \r\nQ 54.890625 34.8125 54.890625 23.390625 \r\nQ 54.890625 11.625 47.5625 5.09375 \r\nQ 40.234375 -1.421875 26.90625 -1.421875 \r\nQ 22.3125 -1.421875 17.546875 -0.640625 \r\nQ 12.796875 0.140625 7.71875 1.703125 \r\nL 7.71875 11.625 \r\nQ 12.109375 9.234375 16.796875 8.0625 \r\nQ 21.484375 6.890625 26.703125 6.890625 \r\nQ 35.15625 6.890625 40.078125 11.328125 \r\nQ 45.015625 15.765625 45.015625 23.390625 \r\nQ 45.015625 31 40.078125 35.4375 \r\nQ 35.15625 39.890625 26.703125 39.890625 \r\nQ 22.75 39.890625 18.8125 39.015625 \r\nQ 14.890625 38.140625 10.796875 36.28125 \r\nz\r\n\" id=\"DejaVuSans-53\"/>\r\n      </defs>\r\n      <g transform=\"translate(85.967543 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"136.154403\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- −5.0 -->\r\n      <g transform=\"translate(124.012997 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"174.199858\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- −2.5 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(162.058452 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"212.245313\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 0.0 -->\r\n      <g transform=\"translate(204.29375 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"250.290767\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 2.5 -->\r\n      <g transform=\"translate(242.339205 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"288.336222\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 5.0 -->\r\n      <g transform=\"translate(280.384659 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_8\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"326.381676\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 7.5 -->\r\n      <g transform=\"translate(318.430114 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_9\">\r\n     <g id=\"line2d_9\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"364.427131\" xlink:href=\"#m4c0284f75b\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 10.0 -->\r\n      <g transform=\"translate(353.294318 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_10\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m3900c22cef\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"214.817229\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- −1.00 -->\r\n      <g transform=\"translate(7.2 218.616448)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"190.092922\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- −0.75 -->\r\n      <g transform=\"translate(7.2 193.892141)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"165.368615\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- −0.50 -->\r\n      <g transform=\"translate(7.2 169.167833)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"140.644307\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- −0.25 -->\r\n      <g transform=\"translate(7.2 144.443526)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"115.92\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 0.00 -->\r\n      <g transform=\"translate(15.579688 119.719219)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_15\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"91.195693\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_15\">\r\n      <!-- 0.25 -->\r\n      <g transform=\"translate(15.579688 94.994911)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"66.471385\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_16\">\r\n      <!-- 0.50 -->\r\n      <g transform=\"translate(15.579688 70.270604)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_8\">\r\n     <g id=\"line2d_17\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"41.747078\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_17\">\r\n      <!-- 0.75 -->\r\n      <g transform=\"translate(15.579688 45.546297)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_9\">\r\n     <g id=\"line2d_18\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"44.845313\" xlink:href=\"#m3900c22cef\" y=\"17.022771\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_18\">\r\n      <!-- 1.00 -->\r\n      <g transform=\"translate(15.579688 20.82199)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_19\">\r\n    <path clip-path=\"url(#p6a9294f52a)\" d=\"M 60.063494 62.11782 \r\nL 63.137874 79.862195 \r\nL 66.212255 99.07317 \r\nL 69.286635 118.969365 \r\nL 72.361015 138.741532 \r\nL 75.435395 157.585466 \r\nL 78.509775 174.734718 \r\nL 81.584155 189.491766 \r\nL 84.658536 201.25639 \r\nL 87.732916 209.55008 \r\nL 90.807296 214.035502 \r\nL 93.881676 214.530219 \r\nL 96.956056 211.014108 \r\nL 100.030436 203.630183 \r\nL 103.104817 192.678773 \r\nL 106.179197 178.605311 \r\nL 109.253577 161.982216 \r\nL 112.327957 143.485607 \r\nL 115.402337 123.867807 \r\nL 118.476717 103.926741 \r\nL 121.551098 84.473484 \r\nL 124.625478 66.299268 \r\nL 127.699858 50.143303 \r\nL 130.774238 36.66271 \r\nL 133.848618 26.405792 \r\nL 136.922998 19.789735 \r\nL 139.997379 17.083636 \r\nL 143.071759 18.397564 \r\nL 146.146139 23.678074 \r\nL 149.220519 32.710391 \r\nL 152.294899 45.127138 \r\nL 155.369279 60.423282 \r\nL 158.44366 77.976674 \r\nL 161.51804 97.073357 \r\nL 164.59242 116.936598 \r\nL 167.6668 136.758492 \r\nL 170.74118 155.732809 \r\nL 173.81556 173.087799 \r\nL 176.889941 188.117571 \r\nL 179.964321 200.210812 \r\nL 183.038701 208.875647 \r\nL 186.113081 213.759646 \r\nL 189.187461 214.664159 \r\nL 192.261841 211.552397 \r\nL 195.336222 204.550925 \r\nL 198.410602 193.94452 \r\nL 201.484982 180.164581 \r\nL 204.559362 163.771587 \r\nL 207.633742 145.432298 \r\nL 210.708122 125.89264 \r\nL 213.782503 105.94736 \r\nL 216.856883 86.407702 \r\nL 219.931263 68.068413 \r\nL 223.005643 51.675419 \r\nL 226.080023 37.89548 \r\nL 229.154403 27.289075 \r\nL 232.228784 20.287603 \r\nL 235.303164 17.175841 \r\nL 238.377544 18.080354 \r\nL 241.451924 22.964353 \r\nL 244.526304 31.629188 \r\nL 247.600684 43.722429 \r\nL 250.675065 58.752201 \r\nL 253.749445 76.107191 \r\nL 256.823825 95.081508 \r\nL 259.898205 114.903402 \r\nL 262.972585 134.766643 \r\nL 266.046965 153.863326 \r\nL 269.121346 171.416718 \r\nL 272.195726 186.712862 \r\nL 275.270106 199.129609 \r\nL 278.344486 208.161926 \r\nL 281.418866 213.442436 \r\nL 284.493246 214.756364 \r\nL 287.567627 212.050265 \r\nL 290.642007 205.434208 \r\nL 293.716387 195.17729 \r\nL 296.790767 181.696697 \r\nL 299.865147 165.540732 \r\nL 302.939527 147.366516 \r\nL 306.013908 127.913259 \r\nL 309.088288 107.972193 \r\nL 312.162668 88.354393 \r\nL 315.237048 69.857784 \r\nL 318.311428 53.234689 \r\nL 321.385808 39.161227 \r\nL 324.460189 28.209817 \r\nL 327.534569 20.825892 \r\nL 330.608949 17.309781 \r\nL 333.683329 17.804498 \r\nL 336.757709 22.28992 \r\nL 339.832089 30.58361 \r\nL 342.90647 42.348234 \r\nL 345.98085 57.105282 \r\nL 349.05523 74.254534 \r\nL 352.12961 93.098468 \r\nL 355.20399 112.870635 \r\nL 358.27837 132.76683 \r\nL 361.352751 151.977805 \r\nL 364.427131 169.72218 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 44.845313 224.64 \r\nL 44.845313 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 379.645313 224.64 \r\nL 379.645313 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 44.845313 224.64 \r\nL 379.645313 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 44.845313 7.2 \r\nL 379.645313 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p6a9294f52a\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"44.845313\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "# 绘制sin曲线\n",
    "x=np.linspace(-10,10,100)\n",
    "y=np.sin(x)\n",
    "plt.plot(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 380.482812 248.518125\" width=\"380.482812pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n <defs>\r\n  <style type=\"text/css\">\r\n*{stroke-linecap:butt;stroke-linejoin:round;}\r\n  </style>\r\n </defs>\r\n <g id=\"figure_1\">\r\n  <g id=\"patch_1\">\r\n   <path d=\"M -0 248.518125 \r\nL 380.482812 248.518125 \r\nL 380.482812 0 \r\nL -0 0 \r\nz\r\n\" style=\"fill:none;\"/>\r\n  </g>\r\n  <g id=\"axes_1\">\r\n   <g id=\"patch_2\">\r\n    <path d=\"M 38.482813 224.64 \r\nL 373.282813 224.64 \r\nL 373.282813 7.2 \r\nL 38.482813 7.2 \r\nz\r\n\" style=\"fill:#ffffff;\"/>\r\n   </g>\r\n   <g id=\"matplotlib.axis_1\">\r\n    <g id=\"xtick_1\">\r\n     <g id=\"line2d_1\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL 0 3.5 \r\n\" id=\"m7eb6c0a9bc\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"53.700994\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_1\">\r\n      <!-- −10.0 -->\r\n      <defs>\r\n       <path d=\"M 10.59375 35.5 \r\nL 73.1875 35.5 \r\nL 73.1875 27.203125 \r\nL 10.59375 27.203125 \r\nz\r\n\" id=\"DejaVuSans-8722\"/>\r\n       <path d=\"M 12.40625 8.296875 \r\nL 28.515625 8.296875 \r\nL 28.515625 63.921875 \r\nL 10.984375 60.40625 \r\nL 10.984375 69.390625 \r\nL 28.421875 72.90625 \r\nL 38.28125 72.90625 \r\nL 38.28125 8.296875 \r\nL 54.390625 8.296875 \r\nL 54.390625 0 \r\nL 12.40625 0 \r\nz\r\n\" id=\"DejaVuSans-49\"/>\r\n       <path d=\"M 31.78125 66.40625 \r\nQ 24.171875 66.40625 20.328125 58.90625 \r\nQ 16.5 51.421875 16.5 36.375 \r\nQ 16.5 21.390625 20.328125 13.890625 \r\nQ 24.171875 6.390625 31.78125 6.390625 \r\nQ 39.453125 6.390625 43.28125 13.890625 \r\nQ 47.125 21.390625 47.125 36.375 \r\nQ 47.125 51.421875 43.28125 58.90625 \r\nQ 39.453125 66.40625 31.78125 66.40625 \r\nz\r\nM 31.78125 74.21875 \r\nQ 44.046875 74.21875 50.515625 64.515625 \r\nQ 56.984375 54.828125 56.984375 36.375 \r\nQ 56.984375 17.96875 50.515625 8.265625 \r\nQ 44.046875 -1.421875 31.78125 -1.421875 \r\nQ 19.53125 -1.421875 13.0625 8.265625 \r\nQ 6.59375 17.96875 6.59375 36.375 \r\nQ 6.59375 54.828125 13.0625 64.515625 \r\nQ 19.53125 74.21875 31.78125 74.21875 \r\nz\r\n\" id=\"DejaVuSans-48\"/>\r\n       <path d=\"M 10.6875 12.40625 \r\nL 21 12.40625 \r\nL 21 0 \r\nL 10.6875 0 \r\nz\r\n\" id=\"DejaVuSans-46\"/>\r\n      </defs>\r\n      <g transform=\"translate(38.378338 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"211.035156\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"242.822266\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_2\">\r\n     <g id=\"line2d_2\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"91.746449\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_2\">\r\n      <!-- −7.5 -->\r\n      <defs>\r\n       <path d=\"M 8.203125 72.90625 \r\nL 55.078125 72.90625 \r\nL 55.078125 68.703125 \r\nL 28.609375 0 \r\nL 18.3125 0 \r\nL 43.21875 64.59375 \r\nL 8.203125 64.59375 \r\nz\r\n\" id=\"DejaVuSans-55\"/>\r\n       <path d=\"M 10.796875 72.90625 \r\nL 49.515625 72.90625 \r\nL 49.515625 64.59375 \r\nL 19.828125 64.59375 \r\nL 19.828125 46.734375 \r\nQ 21.96875 47.46875 24.109375 47.828125 \r\nQ 26.265625 48.1875 28.421875 48.1875 \r\nQ 40.625 48.1875 47.75 41.5 \r\nQ 54.890625 34.8125 54.890625 23.390625 \r\nQ 54.890625 11.625 47.5625 5.09375 \r\nQ 40.234375 -1.421875 26.90625 -1.421875 \r\nQ 22.3125 -1.421875 17.546875 -0.640625 \r\nQ 12.796875 0.140625 7.71875 1.703125 \r\nL 7.71875 11.625 \r\nQ 12.109375 9.234375 16.796875 8.0625 \r\nQ 21.484375 6.890625 26.703125 6.890625 \r\nQ 35.15625 6.890625 40.078125 11.328125 \r\nQ 45.015625 15.765625 45.015625 23.390625 \r\nQ 45.015625 31 40.078125 35.4375 \r\nQ 35.15625 39.890625 26.703125 39.890625 \r\nQ 22.75 39.890625 18.8125 39.015625 \r\nQ 14.890625 38.140625 10.796875 36.28125 \r\nz\r\n\" id=\"DejaVuSans-53\"/>\r\n      </defs>\r\n      <g transform=\"translate(79.605043 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_3\">\r\n     <g id=\"line2d_3\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"129.791903\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_3\">\r\n      <!-- −5.0 -->\r\n      <g transform=\"translate(117.650497 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_4\">\r\n     <g id=\"line2d_4\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"167.837358\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_4\">\r\n      <!-- −2.5 -->\r\n      <defs>\r\n       <path d=\"M 19.1875 8.296875 \r\nL 53.609375 8.296875 \r\nL 53.609375 0 \r\nL 7.328125 0 \r\nL 7.328125 8.296875 \r\nQ 12.9375 14.109375 22.625 23.890625 \r\nQ 32.328125 33.6875 34.8125 36.53125 \r\nQ 39.546875 41.84375 41.421875 45.53125 \r\nQ 43.3125 49.21875 43.3125 52.78125 \r\nQ 43.3125 58.59375 39.234375 62.25 \r\nQ 35.15625 65.921875 28.609375 65.921875 \r\nQ 23.96875 65.921875 18.8125 64.3125 \r\nQ 13.671875 62.703125 7.8125 59.421875 \r\nL 7.8125 69.390625 \r\nQ 13.765625 71.78125 18.9375 73 \r\nQ 24.125 74.21875 28.421875 74.21875 \r\nQ 39.75 74.21875 46.484375 68.546875 \r\nQ 53.21875 62.890625 53.21875 53.421875 \r\nQ 53.21875 48.921875 51.53125 44.890625 \r\nQ 49.859375 40.875 45.40625 35.40625 \r\nQ 44.1875 33.984375 37.640625 27.21875 \r\nQ 31.109375 20.453125 19.1875 8.296875 \r\nz\r\n\" id=\"DejaVuSans-50\"/>\r\n      </defs>\r\n      <g transform=\"translate(155.695952 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_5\">\r\n     <g id=\"line2d_5\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"205.882812\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_5\">\r\n      <!-- 0.0 -->\r\n      <g transform=\"translate(197.93125 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_6\">\r\n     <g id=\"line2d_6\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"243.928267\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_6\">\r\n      <!-- 2.5 -->\r\n      <g transform=\"translate(235.976705 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_7\">\r\n     <g id=\"line2d_7\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"281.973722\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_7\">\r\n      <!-- 5.0 -->\r\n      <g transform=\"translate(274.022159 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-53\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_8\">\r\n     <g id=\"line2d_8\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"320.019176\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_8\">\r\n      <!-- 7.5 -->\r\n      <g transform=\"translate(312.067614 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-55\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"xtick_9\">\r\n     <g id=\"line2d_9\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"358.064631\" xlink:href=\"#m7eb6c0a9bc\" y=\"224.64\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_9\">\r\n      <!-- 10.0 -->\r\n      <g transform=\"translate(346.931818 239.238437)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"matplotlib.axis_2\">\r\n    <g id=\"ytick_1\">\r\n     <g id=\"line2d_10\">\r\n      <defs>\r\n       <path d=\"M 0 0 \r\nL -3.5 0 \r\n\" id=\"m139c68f8ce\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n      </defs>\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"217.129319\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_10\">\r\n      <!-- −1.0 -->\r\n      <g transform=\"translate(7.2 220.928537)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_2\">\r\n     <g id=\"line2d_11\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"183.689787\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_11\">\r\n      <!-- −0.5 -->\r\n      <g transform=\"translate(7.2 187.489006)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-8722\"/>\r\n       <use x=\"83.789062\" xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"147.412109\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"179.199219\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_3\">\r\n     <g id=\"line2d_12\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"150.250256\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_12\">\r\n      <!-- 0.0 -->\r\n      <g transform=\"translate(15.579688 154.049475)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_4\">\r\n     <g id=\"line2d_13\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"116.810725\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_13\">\r\n      <!-- 0.5 -->\r\n      <g transform=\"translate(15.579688 120.609944)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-48\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_5\">\r\n     <g id=\"line2d_14\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"83.371194\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_14\">\r\n      <!-- 1.0 -->\r\n      <g transform=\"translate(15.579688 87.170413)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_6\">\r\n     <g id=\"line2d_15\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"49.931663\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_15\">\r\n      <!-- 1.5 -->\r\n      <g transform=\"translate(15.579688 53.730882)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-49\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n    <g id=\"ytick_7\">\r\n     <g id=\"line2d_16\">\r\n      <g>\r\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"38.482813\" xlink:href=\"#m139c68f8ce\" y=\"16.492132\"/>\r\n      </g>\r\n     </g>\r\n     <g id=\"text_16\">\r\n      <!-- 2.0 -->\r\n      <g transform=\"translate(15.579688 20.291351)scale(0.1 -0.1)\">\r\n       <use xlink:href=\"#DejaVuSans-50\"/>\r\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n      </g>\r\n     </g>\r\n    </g>\r\n   </g>\r\n   <g id=\"line2d_17\">\r\n    <path clip-path=\"url(#p6805bb6cea)\" d=\"M 53.700994 64.712721 \r\nL 56.775374 60.872506 \r\nL 59.849755 74.534382 \r\nL 62.924135 136.428814 \r\nL 65.998515 101.917881 \r\nL 69.072895 125.44804 \r\nL 72.147275 167.159161 \r\nL 75.221655 144.151047 \r\nL 78.296036 205.173423 \r\nL 81.370416 174.001694 \r\nL 84.444796 191.215983 \r\nL 87.519176 161.247744 \r\nL 90.593556 195.033111 \r\nL 93.667936 155.06413 \r\nL 96.742317 182.317682 \r\nL 99.816697 167.137428 \r\nL 102.891077 178.530679 \r\nL 105.965457 108.518288 \r\nL 109.039837 130.571938 \r\nL 112.114217 75.996634 \r\nL 115.188598 85.841832 \r\nL 118.262978 61.22841 \r\nL 121.337358 93.262561 \r\nL 124.411738 51.941235 \r\nL 127.486118 29.380723 \r\nL 130.560498 69.291191 \r\nL 133.634879 24.158013 \r\nL 136.709259 61.707171 \r\nL 139.783639 43.040117 \r\nL 142.858019 44.725592 \r\nL 145.932399 96.240405 \r\nL 149.006779 94.675316 \r\nL 152.08116 105.748281 \r\nL 155.15554 70.720514 \r\nL 158.22992 105.99496 \r\nL 161.3043 118.924786 \r\nL 164.37868 173.339364 \r\nL 167.45306 165.101331 \r\nL 170.527441 134.93491 \r\nL 173.601821 143.406168 \r\nL 176.676201 192.149284 \r\nL 179.750581 210.650544 \r\nL 182.824961 204.161064 \r\nL 185.899341 214.756364 \r\nL 188.973722 144.571367 \r\nL 192.048102 146.725841 \r\nL 195.122482 177.844315 \r\nL 198.196862 118.045212 \r\nL 201.271242 149.989384 \r\nL 204.345622 144.107538 \r\nL 207.420003 131.338702 \r\nL 210.494383 119.440854 \r\nL 213.568763 114.877366 \r\nL 216.643143 93.182252 \r\nL 219.717523 89.747101 \r\nL 222.791903 46.920282 \r\nL 225.866284 33.47124 \r\nL 228.940664 70.49013 \r\nL 232.015044 66.248098 \r\nL 235.089424 30.462745 \r\nL 238.163804 46.75168 \r\nL 241.238184 70.37156 \r\nL 244.312565 61.713586 \r\nL 247.386945 90.767045 \r\nL 250.461325 98.88489 \r\nL 253.535705 97.401639 \r\nL 256.610085 152.435735 \r\nL 259.684465 128.985894 \r\nL 262.758846 171.073529 \r\nL 265.833226 153.15913 \r\nL 268.907606 197.548858 \r\nL 271.981986 154.820475 \r\nL 275.056366 184.299329 \r\nL 278.130746 154.373003 \r\nL 281.205127 183.927562 \r\nL 284.279507 191.279272 \r\nL 287.353887 149.022048 \r\nL 290.428267 166.478906 \r\nL 293.502647 142.275156 \r\nL 296.577027 169.799298 \r\nL 299.651408 94.113961 \r\nL 302.725788 114.018757 \r\nL 305.800168 79.718435 \r\nL 308.874548 56.061569 \r\nL 311.948928 90.040139 \r\nL 315.023308 51.610733 \r\nL 318.097689 29.268279 \r\nL 321.172069 37.851429 \r\nL 324.246449 17.083636 \r\nL 327.320829 38.956818 \r\nL 330.395209 27.335452 \r\nL 333.469589 28.833712 \r\nL 336.54397 95.620517 \r\nL 339.61835 75.659728 \r\nL 342.69273 108.789728 \r\nL 345.76711 122.045672 \r\nL 348.84149 127.993652 \r\nL 351.91587 141.963061 \r\nL 354.990251 129.390449 \r\nL 358.064631 151.007198 \r\n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n   </g>\r\n   <g id=\"patch_3\">\r\n    <path d=\"M 38.482813 224.64 \r\nL 38.482813 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_4\">\r\n    <path d=\"M 373.282813 224.64 \r\nL 373.282813 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_5\">\r\n    <path d=\"M 38.482812 224.64 \r\nL 373.282812 224.64 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n   <g id=\"patch_6\">\r\n    <path d=\"M 38.482812 7.2 \r\nL 373.282812 7.2 \r\n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n   </g>\r\n  </g>\r\n </g>\r\n <defs>\r\n  <clipPath id=\"p6805bb6cea\">\r\n   <rect height=\"217.44\" width=\"334.8\" x=\"38.482813\" y=\"7.2\"/>\r\n  </clipPath>\r\n </defs>\r\n</svg>\r\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "# 绘制sin曲线\n",
    "x=np.linspace(-10,10,100)\n",
    "y=np.sin(x)+np.random.rand(len(x))\n",
    "plt.plot(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Numpy的数学统计函数\n",
    "### 1.Numpy有哪些数学统计函数\n",
    "\n",
    "| 函数名 | 说明 |\n",
    "| ------ | ---- |\n",
    "|  np.sum| 所有元素的和      |\n",
    "| np.prod | 所有元素的乘积     |\n",
    "| np.cumsum    | 元素的累积加和      |\n",
    "| np.cumprod |  元素的累积乘积    |\n",
    "|  np.min      |  最小值    |\n",
    "|  np.max      |  最大值    |\n",
    "|  np.percentile      |  0-100百分数    |\n",
    "|  np.quantile     |  0-1分位数    |\n",
    "|  np.median     |  中位数   |\n",
    "|  np.average      |  加权平均,参数可以指定 weights    |\n",
    "|  np.mean      |  平均值    |\n",
    "|  np.sid      |  标准差    |\n",
    "|  np.var      |  方差    |\n",
    "\n",
    "### 2. 怎样实现不同的axis 计算\n",
    "以上函数,都有一个参数叫做axis 用于指定计算轴为行还是列,如果不指定,那么会计算所有元素的结果\n",
    "\n",
    "### 3.实例: 机器学习将数据进行标准化\n",
    "A=(A-mean(A,axis=0)/std(A,axis=0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3],\n       [ 4,  5,  6,  7],\n       [ 8,  9, 10, 11]])"
     },
     "metadata": {},
     "execution_count": 143
    }
   ],
   "source": [
    "arr=np.arange(12).reshape(3,4)\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([ 0,  1,  3,  6, 10, 15, 21, 28, 36, 45, 55, 66], dtype=int32)"
     },
     "metadata": {},
     "execution_count": 144
    }
   ],
   "source": [
    "np.cumsum(arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32)"
     },
     "metadata": {},
     "execution_count": 145
    }
   ],
   "source": [
    "np.cumprod(arr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([2.75, 5.5 , 8.25])"
     },
     "metadata": {},
     "execution_count": 147
    }
   ],
   "source": [
    "np.percentile(arr,[25,50,75])  #按照百分比的位置取数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([2.75, 5.5 , 8.25])"
     },
     "metadata": {},
     "execution_count": 148
    }
   ],
   "source": [
    "np.quantile(arr,[0.25,0.5,0.75])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "5.274857580631588"
     },
     "metadata": {},
     "execution_count": 152
    }
   ],
   "source": [
    "weights=np.random.rand(*arr.shape)\n",
    "np.average(arr,weights=weights)      #加权平均"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.Numpy 的axis参数的用途\n",
    "axis=0 代表行、 axis=1 代表列\n",
    "对于 sum/mean/media 等聚合函数:\n",
    "- 理解1：axis=0 代表把行消解掉,axios=1 代表 代表把列消解掉\n",
    "- 理解2: axis=0 代表跨行计算,axios=1 代表跨列计算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3],\n       [ 4,  5,  6,  7],\n       [ 8,  9, 10, 11]])"
     },
     "metadata": {},
     "execution_count": 155
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([12, 15, 18, 21])"
     },
     "metadata": {},
     "execution_count": 156
    }
   ],
   "source": [
    "arr.sum(axis=0)      # 将行合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  3,  6],\n       [ 4,  9, 15, 22],\n       [ 8, 17, 27, 38]], dtype=int32)"
     },
     "metadata": {},
     "execution_count": 157
    }
   ],
   "source": [
    "arr.cumsum(axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 机器学习将数据进行标准化\n",
    "arr 如果对于到现实世界的一种解释:\n",
    "\n",
    "- 行: 每行对应一个样本数据\n",
    "- 列: 每列代表样本的一个特征\n",
    "\n",
    "数据标准化:\n",
    "- 对于机器学习、神经网络来说, 不同列的量纲应该相同, 训练收敛的更快\n",
    "- 比如商品的价格是0到100元、销量是1万到10万个，这两数字没有可比性，因此需要先做标准化\n",
    "- 不同列代表不同的特征，因此需要axis=0做计算\n",
    "- 标准化一般使用A=(A-mean(A,axis=0))/sid(A,axis=0)) 公式进行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[ 0,  1,  2,  3],\n       [ 4,  5,  6,  7],\n       [ 8,  9, 10, 11]])"
     },
     "metadata": {},
     "execution_count": 166
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([4., 5., 6., 7.])"
     },
     "metadata": {},
     "execution_count": 159
    }
   ],
   "source": [
    "#计算每列的平均值\n",
    "mean=np.mean(arr,axis=0)\n",
    "mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([3.26598632, 3.26598632, 3.26598632, 3.26598632])"
     },
     "metadata": {},
     "execution_count": 160
    }
   ],
   "source": [
    "# 计算每列的方差\n",
    "mean=np.std(arr,axis=0)\n",
    "mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": "array([[-3.26598632, -2.26598632, -1.26598632, -0.26598632],\n       [ 0.73401368,  1.73401368,  2.73401368,  3.73401368],\n       [ 4.73401368,  5.73401368,  6.73401368,  7.73401368]])"
     },
     "metadata": {},
     "execution_count": 165
    }
   ],
   "source": [
    "# 计算分子 这叫做numpy的广播   广播的意思就是将 mean 值变成与 array 维度相同\n",
    "fenzi=arr-mean\n",
    "fenzi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6-final"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}